package rdd.operate;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;

import java.util.Arrays;
import java.util.List;

public class Spark63_Operate_Action {
    public static void main(String[] args) {
        final List<Integer> nums = Arrays.asList(1,2,3,4);
        final SparkConf conf = new SparkConf();
        conf.setMaster("local");
        conf.setAppName("spark");
        //函数式编程可以使用.不断的套用，减少很多的中间对象
        final JavaSparkContext jsc = new JavaSparkContext(conf);

        final JavaRDD<Integer> map = jsc.parallelize(nums, 2).map(
                        num ->{
                            System.out.println("num =" + num);
                            return num * 2;
                        });

        //collect是行动算子，触发整个作业的执行
        //若把这里备注了，控制台上不会有结果，因为转换算子是懒加载。如果没有行动算子，转换算子只是逻辑，并不会执行
        map.collect().forEach(System.out::println);

        jsc.close();
    }
}
